
/*
 * Desenvolvimento para WEB
 * 
 * NOME: Vitor Augusto Graciani           RA: 345270
 * NOME: Felipe Petruz Brina              RA: 345083
 * NOME: Diego Zamboni Latance            RA: 344990
 * NOME: Rafael Claudio Domene            RA: 345040
 * NOME: Vinicius Rodrigues de Campos     RA: 345350
 * 
 */


package controle;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import model.*;

public class ValidaLogin extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String tipo = request.getParameter("tipo");
        if (tipo.compareTo("login") == 0) {
            try {
                login(request, response);
            } catch (DAOException ex) {
                Logger.getLogger(ValidaLogin.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
        if (tipo.compareTo("logout") == 0) {
            logout(request, response);
        }
    }

    private void login(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, DAOException {
        String login = request.getParameter("username");
        String senha = request.getParameter("senha");
        //chegar se o usuario e valido
        if (UsuarioValido(login, senha)) {
            HttpSession session = request.getSession(); // cria uma sessao se ja tiver 1 ele destroi
            UsuarioBEAN user = new UsuarioBEAN();
            try {
                ColaboradorDAO colaborador = new ColaboradorDAO();
                user = colaborador.retornaNome(login);
                session.setAttribute("Usuario", user);
                response.sendRedirect("index.jsp");
            } catch (DAOException e) {
                request.setAttribute("Usuario", null);
            }

        } else {

            HttpSession session2 = request.getSession(false);
            session2.setAttribute("Usuario", null);
            response.sendRedirect("index.jsp");

        }//fim

    }

    private void logout(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        HttpSession session = request.getSession(false);
        session.invalidate();
        response.sendRedirect("index.jsp");
    }//fim login

    private boolean UsuarioValido(String login, String senha) throws DAOException {


        UsuarioBEAN usuarioComparacao = new UsuarioBEAN();
        UsuarioBEAN usuarioRetorno = new UsuarioBEAN();

        usuarioComparacao.setEmail(login);
        usuarioComparacao.setSenha(senha);

        ValidaLoginDAO usuarioValido = new ValidaLoginDAO();

        usuarioRetorno = usuarioValido.recuperaDados(usuarioComparacao);

        if (usuarioRetorno != null) {
            String loginValido = usuarioRetorno.getEmail();
            String senhaValida = usuarioRetorno.getSenha();

            if (login.equals(loginValido) && senha.equals(senhaValida)) {
                return true;
            }
        }

        return false;

    }
}